package com.atguigu.springbootdemo.mapper;

import com.atguigu.springbootdemo.beans.Employee;
import com.atguigu.springbootdemo.beans.MyData;
import com.baomidou.dynamic.datasource.annotation.DS;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * Created by Smexy on 2023/3/22
 * <p>
 * 在编程规范中，编写的类不是工具类，一般的套路都是先写一个接口，再提供实现！
 * <p>
 * 先为接口提供一个实现类，创建一个实现类的实例。
 * 在这里，Mybatis提供了动态代理技术，可以在没有编写实现类的情况下，动态为接口提供实现类，再返回一个对象！
 *
 *
 * @Mapper: 有两个作用
 *  ①给同事看，这是一个Dao或Mapper
 *  ②容器扫描到后，会自动调用Mybatis提供的动态代理技术，在容器中为这个Mapper创建一个实例
 */
//当前类的所有方法都访问 221109 这个数据源
@DS("221109")
@Mapper
public interface EmployeeMapper
{
    //自己声明方法，灵活。对入参和返回值类型有明确的类型要求
    Employee getEmpById(Integer id);

    //增删改可以没有返回值
    void insertEmployee(Employee e);

    //更新
    void updateEmployee(Employee e);

    //删除
    void deleteEmpById(Integer id);

    List<Employee> getAll();

    //查询ads_new_order_user_stats表
    //当前方法的sql是发送给 gmall这个数据源。 就近原则。
    @DS("gmall")
    List<MyData> getAds();
}
